﻿using System;
using System.ComponentModel;
using System.Windows.Forms;
using cndp.Model;

namespace cndp.View
{
    public partial class FormNewContest : Form
    {
        public BindingList<Contest> ContestList = new BindingList<Contest>();

        public FormNewContest()
        {
            ContestName = "";
            ContestLocation = "";
            StartTime = "";
            FinishTime = "";
            DeadlineDate = "";
            ContestAdministrator = "";
            Id = -1;
            InitializeComponent();
        }

        public string ContestName { get; set; }
        public string ContestLocation { get; set; }
        public string StartTime { get; set; }
        public string FinishTime { get; set; }
        public string DeadlineDate { get; set; }
        public string ContestAdministrator { get; set; }
        public int Id { get; set; }

        private void FormNewContest_Load(object sender, EventArgs e)
        {
            KeyPreview = true;
            var toolTip1 = new ToolTip();

            toolTip1.AutoPopDelay = 5000;
            toolTip1.InitialDelay = 1000;
            toolTip1.ReshowDelay = 500;

            toolTip1.ShowAlways = true;

            toolTip1.SetToolTip(labelName, "Namn på tävlingen");
            toolTip1.SetToolTip(labelID, "Tävlingens ID");
            toolTip1.SetToolTip(labelLocation, "Platsen som tävlingen äger rum på");
            toolTip1.SetToolTip(labelStartTime, "Tävlingens starttid");
            toolTip1.SetToolTip(labelFinishTime, "Tävlingens sluttid");
            toolTip1.SetToolTip(labelDeadlineDate, "Deadline för anmälan");
            toolTip1.SetToolTip(labelAdministrator, "Tävlingens administratör");

            toolTip1.SetToolTip(LabelHelpStartTime, "Klockslag 'mm:ss'");
            toolTip1.SetToolTip(labelHelpFinishTime, "Klockslag 'mm:ss'");
            toolTip1.SetToolTip(labelHelpDeadlineDate, "Klockslag 'mm:ss'");
        }

        private void label1_Click(object sender, EventArgs e)
        {
        }

        private void label2_Click(object sender, EventArgs e)
        {
        }

        private void buttonOK_Click(object sender, EventArgs e)
        {
            var d = new Datacheck();
            if (!d.CheckIfContainNumbers(ContestNameTextBox.Text))
            {
                ContestName = ContestNameTextBox.Text;
                if (!d.CheckIfContainNumbers(LocationTextBox.Text))
                {
                    ContestLocation = LocationTextBox.Text;
                    if (d.CheckIfIntegerAndNotNegative(comboBoxStarttimeday.Text) && d.CheckIfIntegerAndNotNegative(comboBoxStarttimemonth.Text) &&
                        d.CheckIfIntegerAndNotNegative(comboBoxStarttimeyear.Text) && d.CheckIfInteger(textBoxStarttimehour.Text) &&
                        d.CheckIfInteger(textBoxStarttimemin.Text))
                    {
                        StartTime = comboBoxStarttimeyear.SelectedItem + "-" + comboBoxStarttimemonth.SelectedItem +
                                    "-" + comboBoxStarttimeday.SelectedItem + " " + textBoxStarttimehour.Text + ":"
                                    + textBoxStarttimemin.Text;
                        if (d.CheckIfIntegerAndNotNegative(comboBoxFinishTimeYear.Text)  && d.CheckIfIntegerAndNotNegative(comboBoxFinishTimeMonth.Text) &&
                            d.CheckIfIntegerAndNotNegative(comboBoxFinishTimeDay.Text)
                            && d.CheckIfInteger(textBoxFinishTimeHour.Text) &&
                            d.CheckIfInteger(textBoxFinishTimeMin.Text))
                        {
                            FinishTime = comboBoxFinishTimeYear.SelectedItem + "-" +
                                         comboBoxFinishTimeMonth.SelectedItem +
                                         "-" + comboBoxFinishTimeDay.SelectedItem + " " + textBoxFinishTimeHour.Text +
                                         ":"
                                         + textBoxFinishTimeMin.Text;
                            if (d.CheckIfIntegerAndNotNegative(comboBoxDeadlineDay.Text) && d.CheckIfIntegerAndNotNegative(comboBoxDeadlineMonth.Text) &&
                                d.CheckIfIntegerAndNotNegative(comboBoxDeadlineYear.Text)
                                && d.CheckIfInteger(textBoxDeadlineHour.Text) &&
                                d.CheckIfInteger(textBoxDeadlineMin.Text))
                            {
                                DeadlineDate = comboBoxDeadlineYear.SelectedItem + "-" +
                                               comboBoxDeadlineMonth.SelectedItem +
                                               "-" + comboBoxDeadlineDay.SelectedItem + " " +
                                               textBoxDeadlineHour.Text + ":"
                                               + textBoxFinishTimeMin.Text;
                                if (!d.CheckIfContainNumbers(ContestAdministratorTextBox.Text))
                                {
                                    ContestAdministrator = ContestAdministratorTextBox.Text;
                                    if (d.CheckIfInteger(IdTextBox.Text))
                                    {
                                        Id = Convert.ToInt32(IdTextBox.Text);
                                        var idNotTaken = true;
                                        for (var i = 0; i < ContestList.Count; ++i)
                                        {
                                            if (Convert.ToInt32(IdTextBox.Text) == ContestList[i].Id)
                                            {
                                                idNotTaken = false;
                                            }
                                        }
                                        if (idNotTaken)
                                        {
                                            DialogResult = DialogResult.OK;
                                        }
                                        else
                                        {
                                            MessageBox.Show(@"Tävlings-ID redan taget", @"Ogiltigt data");
                                        }
                                    }
                                    else
                                        MessageBox.Show(@"Välj ett korrekt tävlings-ID", @"Ogiltigt data");
                                }
                                else
                                    MessageBox.Show(@"Välj ett giltigt administartornamn", @"Ogiltigt data.");
                            }
                            else
                                MessageBox.Show(@"Välj ett korrekt deadlinedatum", @"Ogiltigt data");
                        }
                        else
                            MessageBox.Show(@"Välj ett korrekt slutdatum. ", @"Ogiltigt data");
                    }
                    else
                        MessageBox.Show(@"Välj ett korrrekt startdatum", @"Ogiltigt data.");
                }
                else
                    MessageBox.Show(@"Fel format på tävlingsplats", @"Ogiltgt data.");
            }
            else
                MessageBox.Show(@"Välj ett giltigt namn.", @"Ogiltigt format.");
        }

        private void buttonAvbryt_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
        }

        private void comboBoxStarttimeyear_SelectedIndexChanged(object sender, EventArgs e)
        {
        }

        private void FormNewContest_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Escape)
                DialogResult = DialogResult.Cancel;
        }
    }
}